﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Servico;
using System.Data;

public partial class SubmeterPedido : System.Web.UI.Page
{
    Service1 servico = new Service1();

    protected void Page_Load(object sender, EventArgs e)
    {

       if (Session["Email"] != null)
        {
            if (Session["Nivel"] == null) // Se for um cliente
            {
                Literal lit = new Literal();
                lit.Text = "<ul class=\"bottom\"><li class=\"first\"><a href=\"SubmeterPedido.aspx\">Submeter Pedido</a></li><li><a href=\"InfoCliente.aspx\">Informação do Cliente</a></li></ul>";
                Menu_Funcionalidades.Controls.Add(lit); 

                PanelEscolherCliente.Visible = false;
                Session["ClienteEmail"] = Session["Email"].ToString();
                carregaInformacao();
                PanelSeleccionarPedido.Visible = true;
            }
            else if (Session["Nivel"].ToString().Equals("6")) // Se for um funcionario de Call Center
            {
                Literal lit = new Literal();
                lit.Text = "<ul class=\"bottom\"><li class=\"first\"><a href=\"SubmeterPedido.aspx\">Submeter Pedido</a></li><li><a href=\"RegistarCliente.aspx\">Registar Cliente</a></li><li><a href=\"ConsultarPlaneamentoGeral.aspx\">Consultar Planeamento Geral</a></li></ul>";
                Menu_Funcionalidades.Controls.Add(lit);

                PanelEscolherCliente.Visible = true;
            }
            
        }
        else
        {
            Session["Erro"] = "Por favor autentique-se!";
            Response.Redirect("Home");
        }
       MensagemErro();
    }


    protected void carregaInformacao()
    {
        resetButtons();
        // recolhe a informacao sobre as instalcoes que o cliente possui e a respectiva ultima accao sobre ela
        DataTable dttblData = servico.informacaoInstalacoes(Session["ClienteEmail"].ToString());
        DataTable myDataTable1 = null, myDataTable2 = null, myDataTable3 = null;

        DataRow[] dataRows = null;
        // Array de registos
        if (dttblData != null) dataRows = dttblData.Select();

        for (int i = 0; i < dataRows.Length; i++)
        {
            int id_pedido = (int)dataRows[i]["id_pedido"];

            if (id_pedido == 1)
            {
                if (myDataTable1 == null) myDataTable1 = criaDataTable();
                insereNaDataTable(myDataTable1, dataRows[i], GridView1);
                BotaoAnularPrimeira.Visible = true;
                BotaoRepararPrimeira.Visible = true;
            }
            if (id_pedido == 2)
            {
                if (myDataTable2 == null) myDataTable2 = criaDataTable();
                insereNaDataTable(myDataTable2, dataRows[i], GridView2);
                BotaoAnularSegunda.Visible = true;
                BotaoRepararSegunda.Visible = true;
            }
            if (id_pedido == 3)
            {
                if (myDataTable3 == null) myDataTable3 = criaDataTable();
                insereNaDataTable(myDataTable3, dataRows[i], GridView3);
                BotaoAnularInternet.Visible = true;
                BotaoRepararInternet.Visible = true;
            }
        }
        //// Percorre os registos das 3 instalacoes existentes
        //for (int i = 0; i < 3; i++)
        //{
            
        //    if (i < dataRows.Length)
        //    {
        //        int id_pedido = (int)dataRows[i]["id_pedido"]; //Response.Write("<br/>Linhas:" + dataRows.Length+"<br/>id_pedido:"+id_pedido);

        //        if (id_pedido == 1 || id_pedido == 4 || id_pedido == 7) // Se for primeira linha
        //        {
        //            insereNaDataTable(criaDataTable(), dataRows[i], GridView1);
        //            if (id_pedido == 1 || id_pedido == 4)
        //            {
        //                BotaoAnularPrimeira.Visible = true;
        //                BotaoRepararPrimeira.Visible = true;
        //            }
        //            else if (id_pedido == 7)
        //                BotaoInstalarPrimeira.Visible = true;
        //        }
        //        else if (i == 0) BotaoInstalarPrimeira.Visible = true;
        //        if (id_pedido == 2 || id_pedido == 5 || id_pedido == 8)
        //        {
        //            insereNaDataTable(criaDataTable(), dataRows[i], GridView2);
        //            if (id_pedido == 2 || id_pedido == 5)
        //            {
        //                BotaoAnularSegunda.Visible = true;
        //                BotaoRepararSegunda.Visible = true;
        //            }
        //            else if (id_pedido == 8)
        //            {
        //                BotaoInstalarSegunda.Visible = true;
        //            }
        //        }
        //        else if (i == 1) { BotaoInstalarSegunda.Visible = true;  }
        //        if (id_pedido == 3 || id_pedido == 6 || id_pedido == 9)
        //        {
        //            insereNaDataTable(criaDataTable(), dataRows[i], GridView3);
        //            if (id_pedido == 3 || id_pedido == 6)
        //            {
        //                BotaoAnularInternet.Visible = true;
        //                BotaoRepararInternet.Visible = true;
        //            }
        //            else if (id_pedido == 9)
        //                BotaoInstalarInternet.Visible = true;
        //        }
        //        else if (i == 2) BotaoInstalarInternet.Visible = true;
        //    }
        //    //else
        //    //{
        //    //    Response.Write("<br/>i:" + i + "&nbspBotaoAnularInternet.Visible.ToString()=" + BotaoAnularInternet.Visible.ToString());
        //    //    if (i == 0 && BotaoAnularPrimeira.Visible.ToString().Equals("False"))
        //    //    {
        //    //        BotaoInstalarPrimeira.Visible = true;
        //    //    }
        //    //    else if (i == 1 && BotaoAnularSegunda.Visible.ToString().Equals("False"))
        //    //    {
        //    //        BotaoInstalarSegunda.Visible = true;
        //    //    }
        //    //    else if (i == 2 && BotaoAnularInternet.Visible.ToString().Equals("False"))
        //    //    {
        //    //        BotaoInstalarInternet.Visible = true;
        //    //    }
        //    //}
        //}
    }

    protected void resetButtons()
    {
        BotaoInstalarPrimeira.Visible = true;
        BotaoAnularPrimeira.Visible = false;
        BotaoRepararPrimeira.Visible = false;
        BotaoInstalarSegunda.Visible = true;
        BotaoAnularSegunda.Visible = false;
        BotaoRepararSegunda.Visible = false;
        BotaoInstalarInternet.Visible = true;
        BotaoAnularInternet.Visible = false;
        BotaoRepararInternet.Visible = false;
    }

    protected DataTable criaDataTable()
    {
        DataTable myDataTable = new DataTable();
        System.Data.DataColumn myDataColumn = new System.Data.DataColumn();


        myDataColumn = new System.Data.DataColumn();
        myDataColumn.ColumnName = "data_entrada_pedido";
        myDataColumn.DataType = System.Type.GetType("System.String");
        myDataTable.Columns.Add(myDataColumn);

        myDataColumn = new System.Data.DataColumn();
        myDataColumn.ColumnName = "data";
        myDataColumn.DataType = System.Type.GetType("System.String");
        myDataTable.Columns.Add(myDataColumn);

        return myDataTable;
    }

    protected void insereNaDataTable(DataTable myDataTable, DataRow row, GridView gridView)
    {
        DataRow dataRow = myDataTable.NewRow();
        dataRow["data_entrada_pedido"] = row["data_entrada_pedido"];
        dataRow["data"] = row["data"];

        myDataTable.Rows.Add(dataRow);

        gridView.DataSource = myDataTable;
        gridView.DataBind();
    }

    protected void ButtonSubmeter_Click(object sender, EventArgs e)
    {
        Button b = (Button)sender;
        int id_pedido = -1;
        switch (b.ID)
        {
            case "BotaoInstalarPrimeira":
                id_pedido = 1;
                break;
            case "BotaoInstalarSegunda":
                id_pedido = 2;
                break;
            case "BotaoInstalarInternet":
                id_pedido = 3;
                break;
            case "BotaoRepararPrimeira":
                id_pedido = 4;
                break;
            case "BotaoRepararSegunda":
                id_pedido = 5;
                break;
            case "BotaoRepararInternet":
                id_pedido = 6;
                break;
            case "BotaoAnularPrimeira":
                id_pedido = 7;
                break;
            case "BotaoAnularSegunda":
                id_pedido = 8;
                break;
            case "BotaoAnularInternet":
                id_pedido = 9;
                break;
        }

        bool valido = true;
        if (id_pedido != 1 && id_pedido != 2 && id_pedido != 3 && !(valido = servico.verificaValidadePedido(Session["ClienteEmail"].ToString(), id_pedido)))
        {
            Session["Erro"] = "O pedido efectuado está actualmente pendente. Não poderá submeter outro!";
        }
        else if (valido && servico.submeterPedido(Session["ClienteEmail"].ToString(), id_pedido))
                Session["Sucesso"] = "Sucesso";
            else
                Session["Erro"] = "Erro ao submeter";

        MensagemErro();
    }

    protected void buttonOK_Click(object sender, EventArgs e)
    {
        if (!txtEmail.Text.Equals(""))
        {
            // se o cliente seleccionado existe
            if (!servico.validarEmailCliente(txtEmail.Text))
            {
                Session["ClienteEmail"] = txtEmail.Text;
                carregaInformacao();
                PanelSeleccionarPedido.Visible = true;
            }
            else
            {
                Session["Erro"] = "Email inválido!";
                PanelSeleccionarPedido.Visible = false;
            }
        }

        MensagemErro();
    }

    protected void MensagemErro()
    {
        if (Session["Erro"] != null)
        {
            Literal lit = new Literal();
            lit.Text = "<ul id=\"menu2\"><li>" + Session["Erro"].ToString() + "</li></ul>";
            PanelMsg.Controls.Add(lit);
            Session["Erro"] = null;
        }
        if (Session["Sucesso"] != null)
        {
            Literal lit = new Literal();
            lit.Text = "<ul id=\"menu3\"><li>" + Session["Sucesso"].ToString() + "</li></ul>";
            PanelMsg.Controls.Add(lit);
            Session["Sucesso"] = null;
        }
    }
}